package com.taotao.service.impl;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.taotao.common.pojo.EasyUIDataGridResult;
import com.taotao.common.pojo.TaotaoResult;
import com.taotao.mapper.TbItemDescMapper;
import com.taotao.mapper.TbItemMapper;
import com.taotao.mapper.TbItemParamExMapper;
import com.taotao.mapper.TbItemParamItemMapper;
import com.taotao.mapper.TbItemParamMapper;
import com.taotao.pojo.TbItem;
import com.taotao.pojo.TbItemDesc;
import com.taotao.pojo.TbItemExample;
import com.taotao.pojo.TbItemExample.Criteria;
import com.taotao.pojo.TbItemParamItem;
import com.taotao.pojo.TbItemParamItemExample;
import com.taotao.pojo.model.TbItemParamModel;
import com.taotao.service.ItemService;
import com.taotao.utils.IDUtils;
import com.taotao.utils.JsonUtils;
/**
 * 通过商品ID查询商品
 * @author 晓风过境
 * @version 1.0
 */
@Service
public class ItemServiceImpl implements ItemService{
	
	@Autowired
	private TbItemParamExMapper itemParamExMapper;
	@Autowired
	private TbItemMapper itemMapper;
	@Autowired
	private TbItemParamMapper itemParamMapper;
	@Autowired
	private TbItemParamItemMapper itemParamItemMapper;
	@Autowired
	private TbItemDescMapper itemDescMapper;
	@Override
	//单个查询通过主键
	public TbItem getItemById(Long itemId) {
		//通过条件查询
		TbItemExample example=new TbItemExample();
		//创建查询条件
		Criteria criteria=example.createCriteria();
		criteria.andIdEqualTo(itemId);
		List<TbItem> list = itemMapper.selectByExample(example);
		TbItem item=null;
		//判断list是不是为空
		if(list !=null && list.size()>0) {
			 item=list.get(0);
		}
		return item;
		//直接通过主键查询
		//TbItem item1 = itemMapper.selectByPrimaryKey(id);
	}
//	@Override
//	public EasyUIDataGridResult getItemList(int page, int rows) {
//		 测试
//		//分页处理  
//		PageHelper.startPage(page, rows);
//		//执行查询
//		TbItemExample example = new TbItemExample();
//		//添加条件
//		//Criteria criteria = example.createCriteria();
//		//criteria.andIdEqualTo(123l);
//		List<TbItem> list = itemMapper.selectByExample(example);
//		//取total
//		PageInfo<TbItem> pageInfo = new PageInfo<>(list);
//		long total = pageInfo.getTotal();
//		
//		//创建返回值对象
//		EasyUIDataGridResult result = new EasyUIDataGridResult(total, list);
//		
//		return result;
//	}
	//分页查询信息
	@Override
	public EasyUIDataGridResult getItemList(int page, int rows) {
		//分页处理
		PageHelper.startPage(page,rows);
		//执行查询
		TbItemExample example=new TbItemExample(); 
		List<TbItem> list = itemMapper.selectByExample(example);
		//获取分页信息
		PageInfo<TbItem> pageInfo=new PageInfo<TbItem>(list);
		//返回处理结果
		EasyUIDataGridResult result=new EasyUIDataGridResult();
		result.setTotal(pageInfo.getTotal());
		result.setRows(list);
		return result;
	}
	//返回信息
	@Override
	public EasyUIDataGridResult getItemParamList(int page, int rows) {
		//使用分页插件
		PageHelper.startPage(page, rows);
		//使用自定义的方法查询
		List<TbItemParamModel> list=itemParamExMapper.selectItemParamList();
		//获取工有多少页
		PageInfo<TbItemParamModel> pageInfo=new PageInfo<TbItemParamModel>(list);
		//创建结果集
		EasyUIDataGridResult result=new EasyUIDataGridResult();
		result.setRows(list);
		result.setTotal(pageInfo.getTotal());
		return result;
	}

	
//	//分页显示规格信息
//	@Override
//	public EasyUIDataGridResult getItemParamList(int page, int rows) {
//		//分页处理
//		PageHelper.startPage(page,rows);
//		//执行查询
//		TbItemParamExample example=new TbItemParamExample();
//		List<TbItemParam> list = itemParamMapper.selectByExampleWithBLOBs(example);
//		//获取分页信息
//		PageInfo<TbItemParam> pageInfo=new PageInfo<TbItemParam>(list);
//		//返回处理结果
//		EasyUIDataGridResult result=new EasyUIDataGridResult();
//		result.setTotal(pageInfo.getTotal());
//		result.setRows(list);
//		return result;
//	}
	@Override
	public TaotaoResult createItem(TbItem item, String desc,String itemParam) {
		//生成商品ID
		long itemId = IDUtils.genItemId();
		// 补全TbItem属性
		item.setId(itemId);
		// '商品状态，1-正常，2-下架，3-删除'
		item.setStatus((byte)1);
		//创建时间和更新时间
		Date date=new Date();
		item.setCreated(date);
		item.setUpdated(date);
		//插入商品表
		itemMapper.insert(item);
		//商品描述
		TbItemDesc itemDesc=new TbItemDesc();
		itemDesc.setItemId(itemId);
		itemDesc.setItemDesc(desc);
		itemDesc.setCreated(date);
		itemDesc.setUpdated(date);
		//插入商品描述数据
		itemDescMapper.insert(itemDesc);
		//添加商品规格处理参数
		TbItemParamItem itemParamItem=new TbItemParamItem();
		itemParamItem.setItemId(itemId);
		itemParamItem.setParamData(itemParam);
		itemParamItem.setCreated(date);
		itemParamItem.setUpdated(date);
		//插入数据
		itemParamItemMapper.insert(itemParamItem);
		return TaotaoResult.ok();
	}
	@Override
	public String getItemParamHtml(Long itemId) {
		//根据商品ID查询规格参数
		TbItemParamItemExample example=new TbItemParamItemExample();
		com.taotao.pojo.TbItemParamItemExample.Criteria criteria=example.createCriteria();
		criteria.andItemIdEqualTo(itemId);
		//执行查询
		List<TbItemParamItem> list = itemParamItemMapper.selectByExampleWithBLOBs(example);
		if(list==null||list.isEmpty()) {
			return "";
		}
		//去规格参数
		TbItemParamItem itemParamItem=list.get(0);
		//取到json数据
		String paraDate=itemParamItem.getParamData();
		//转换成json对象
		List<Map> mapList=JsonUtils.jsonToList(paraDate, Map.class);
		//遍历maplist生成html
		StringBuffer sb = new StringBuffer();
		
		sb.append("<table cellpadding=\"0\" cellspacing=\"1\" width=\"100%\" border=\"1\" class=\"Ptable\">\n");
		sb.append("	<tbody>\n");
		for (Map map : mapList) {
			sb.append("		<tr>\n");
			sb.append("			<th class=\"tdTitle\" colspan=\"2\">"+map.get("group")+"</th>\n");
			sb.append("		</tr>\n");
			//取规格项
			List<Map>mapList2 = (List<Map>) map.get("params");
			for (Map map2 : mapList2) {
				sb.append("		<tr>\n");
				sb.append("			<td class=\"tdTitle\">"+map2.get("k")+"</td>\n");
				sb.append("			<td>"+map2.get("v")+"</td>\n");
				sb.append("		</tr>\n");
			}
		}
		sb.append("	</tbody>\n");
		sb.append("</table>");
		return sb.toString();
	}
	//回显商品修改
	@Override
	public TbItem selectParamById(long id) {
		TbItem list = itemMapper.selectByPrimaryKey(id);
		if(list!=null) {
			return list;
		}
		return null;
	}
	//删除商品
	@Override
	public TaotaoResult deleteItemById(Long[] ids) {
		//遍历传过来的参数
		for(Long id:ids) {
			itemMapper.deleteByPrimaryKey(id);
		}
		return TaotaoResult.ok();
	}
	//商品下架
	@Override
	public TaotaoResult updateItemInstock(Long[] ids) {
		TbItem items=new TbItem();
		//遍历ids
		for(Long id:ids) {
			items.setStatus((byte)2);
			items.setId(id);
			itemMapper.updateByPrimaryKeySelective(items);
		}
		return TaotaoResult.ok();
	}
	//商品上架
	@Override
	public TaotaoResult updateItemReshelf(Long[] ids) {
		TbItem items=new TbItem();
		//遍历ids
		for(Long id:ids) {
			items.setStatus((byte)1);
			items.setId(id);
			itemMapper.updateByPrimaryKeySelective(items);
		}
		return TaotaoResult.ok();
	}
	
}
